---
description:
  GraphQL Inspector - There are a few ways of providing operations and fragments (documents in
  general).
---

import { Callout } from '@theguild/components'

# Providing Documents

There are a few ways of providing operations and fragments (documents in general).

## JavaScript And TypeScript Files

GraphQL Inspector supports glob pattern.

```
./src/app/**/*.ts
```

Given the example above, Inspector will search every file that matches that pattern and extract
operations and fragments wrapped with `gql` or `graphql` template literal tag.

Supported extensions: `.ts`, `.tsx`, `.js` and `.jsx`.

## GraphQL Files

GraphQL Inspector supports glob pattern.

```
./src/app/**/*.graphql
```

Given the example above, Inspector will search every file that matches that pattern and extract
operations and fragments.

Supported extensions: `.graphql`, `.graphqls` and `.gql`.

<Callout type="warning">
  Remember to wrap a glob pattern with quotes: `"./src/app/**/*.graphql"`
</Callout>

## Programmatic API

If you are using programmatic API, you might find `@graphql-tools/load` package useful for loading
documents. Learn more [here](https://graphql-tools.com/docs/documents-loading).

```js
const { validate } = require('@graphql-inspector/core')
const { loadDocuments } = require('@graphql-tools/load')
const { GraphQLFileLoader } = require('@graphql-tools/graphql-file-loader')
const graphql = require('graphql')

const documents = loadDocuments('./src/**/*.graphql', {
  loaders: [new GraphQLFileLoader()]
})

// Convert documents to the format expected by "validate" function
const sources = documents.map(doc => {
  return new graphql.Source(graphql.print(doc.document), doc.location)
})

const invalidDocuments = validate(schema, sources)
```
